#ifndef __SMART_HOME_EVENT_H__
#define __SMART_HOME_EVENT_H__

#include "stdint.h"
#include "stdbool.h"

typedef enum event_type
{
    event_key_press = 1, // 按键事件
    event_iot_cmd,       // iot命令
    event_su03t,         // 语音事件
    event_alarm,
} event_type_t;

typedef struct event_info
{
    event_type_t event;
    union
    {
        uint8_t key_no; // 按键编号
        int iot_data;   // iot数据
        int su03t_data; // 语音数据
    } data;
} event_info_t;

// 在 C 语言中，union 是一种特殊的数据结构，
// 它允许多个不同类型的成员共享同一块内存区域。
// 这意味着在任何时候，union 中只能有一个成员被赋值，
// 其他成员的值会被覆盖。union 的主要用途包括节省内存和实现多态性。

void smart_home_event_init();
void smart_home_event_send(event_info_t *event);
int smart_home_event_wait(event_info_t *event, int timeoutMs);

#endif